using System;
using EPiServer.Common.Security;
using EPiServer.Community.Blog.Security;

namespace EPiAbstractions.Community.Blog.Security
{
    public interface ISecurityHandlerFacade
    {
        UserCollection GetBlogUsers(EPiServer.Community.Blog.Blog blog);

        GroupCollection GetBlogGroups(EPiServer.Community.Blog.Blog blog);

        void SetBlogAccessRights(EPiServer.Community.Blog.Blog blog, IUser user, BlogAccessRights rights);

        void SetBlogAccessRights(EPiServer.Community.Blog.Blog blog, IGroup group, BlogAccessRights rights);

        BlogAccessRights GetBlogAccessRights(EPiServer.Community.Blog.Blog blog, IUser user);

        BlogAccessRights GetBlogAccessRights(EPiServer.Community.Blog.Blog blog, IGroup group);

        void RemoveBlogAccessRights(EPiServer.Community.Blog.Blog blog, IUser user);

        void RemoveBlogAccessRights(EPiServer.Community.Blog.Blog blog, IGroup group);

        void RemoveBlogAccessRights(EPiServer.Community.Blog.Blog blog);

        BlogAccessRights GetTotalBlogAccessRights(EPiServer.Community.Blog.Blog blog, IUser user);

        BlogAccessRights GetTotalBlogAccessRights(EPiServer.Community.Blog.Blog blog, IGroup group);

        String ToString();

        Boolean Equals(Object obj);

        Int32 GetHashCode();

        Type GetType();
    }
}